<!DOCTYPE html>
<html lang="en"><head>
    <title>CZH-DEV BLOG</title>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="format-detection" content="telephone=no" />
    <meta name="theme-color" content="#000084" />
    <link rel="icon" href="https://czh-dev.gitee.io/czh-blog.gitee.io//favicon.ico">
    <link rel="canonical" href="https://czh-dev.gitee.io/czh-blog.gitee.io/">
    
    
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"></button>
            <a class="brand" href="https://czh-dev.gitee.io/czh-blog.gitee.io/">CZH-DEV BLOG</a>
            <div class="nav-collapse collapse">
                <ul class="nav">
                    
                    
                        
                            <li>
                                <a href="/czh-blog.gitee.io/about/">
                                    
                                    <span>About</span>
                                </a>
                            </li>
                        
                    
                        
                            <li>
                                <a href="/czh-blog.gitee.io/post/">
                                    
                                    <span>All posts</span>
                                </a>
                            </li>
                        
                    
                        
                            <li>
                                <a href="/czh-blog.gitee.io/ebook/">
                                    
                                    <span>Resource</span>
                                </a>
                            </li>
                        
                    
                </ul>
            </div>
        </div>
    </div>
</nav><div id="content" class="container">
<div style="display: flex;">
  <div class="row-fluid navmargin">
    <div class="page-header">
      <h1>面试复盘 - Sat, Feb 11, 2023</h1>
    </div>
    <p class="lead"></p>
    <h2 id="第一家苏州">第一家：苏州</h2>
<p>开发部副经理提问：</p>
<ul>
<li>
<p>讲一下SpringMVC</p>
</li>
<li>
<p>数据库用过什么</p>
</li>
<li>
<p>redis常用的数据类型</p>
</li>
<li>
<p>项目redis里面用在什么地方</p>
</li>
<li>
<p>多表查询表集合有哪几种方式</p>
</li>
<li>
<p>左联和内联有什么区别</p>
</li>
<li>
<p>省略几个专业课的问题（数字图像处理是干啥的。。。）</p>
</li>
<li>
<p>开发语言有什么偏好吗</p>
</li>
<li>
<p>如果有其他语言要转可以接受吗</p>
</li>
<li>
<p>软件开发的过程</p>
<p>​	<a href="">可行性研究、需求分析、软件设计、编程、测试、交付、验收、维护</a></p>
</li>
</ul>
<hr>
<p>人事：</p>
<ul>
<li>
<p>对学语言有负担吗（有对日业务，需要学日语）</p>
</li>
<li>
<p>我：现在翻译软件不是很多吗？</p>
<p>答：在特定办公环境里面是不能使用其他除工作之外的软件的</p>
</li>
<li>
<p>如果被安排到对日的部门是可以服从的吗</p>
</li>
<li>
<p>学校成绩排名大概多少</p>
</li>
<li>
<p>你感觉你的性格内向吗</p>
</li>
</ul>
<hr>
<p>我有什么想问的：</p>
<ul>
<li>
<p>这个是实习还是正式</p>
<p><code>没有毕业证之前都是实习，有毕业证之后就可以转正</code></p>
</li>
<li>
<p>待遇</p>
</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>面试时间：2022/06/02</p>
<p>面试时长：22分钟  <code>面试通过</code>，不想去</p>
</blockquote>
<h2 id="第二家上海">第二家：上海</h2>
<p>后端：</p>
<ul>
<li>
<p>集合类哪些是线程安全的</p>
<p>​	<a href=""><em>Vector、HashTable、Properties、ConCurrentHashMap</em></a></p>
</li>
<li>
<p>JDK1.7和JDK1.8的hashmap底层数据结构有什么区别</p>
</li>
<li>
<p>线程中有哪几种状态</p>
<p>​	<em><a href="">新建、运行、阻塞、等待、带超时的等待、终止</a></em></p>
</li>
<li>
<p>阻塞要调用什么方法</p>
<p>​	<a href=""><em>sleep（）、wait()、notify()</em></a></p>
</li>
<li>
<p>线程池有用过吗</p>
</li>
<li>
<p>有几种创建线程的方法</p>
<p>​	<a href="">继承 Thread 类创建线程</a></p>
<p>​	<a href="">实现 Runnable 接口创建线程</a></p>
<p>​	<a href="">使用 Callable 和 FutureTask 创建线程</a></p>
<p>​	 <a href="">使用线程池，例如用 Executor 框架</a></p>
<p>​	 <a href="">Spring 实现多线程（底层是线程池</a>）</p>
<p>​	<a href="">定时器 Timer（底层封装了一个 TimerThread 对象</a>）</p>
</li>
<li>
<p>zookeeper在项目中用来做什么</p>
</li>
<li>
<p>spring注入有哪些方式</p>
<p><img src="D:%5C%E6%A1%8C%E9%9D%A2%5C%E7%AC%94%E8%AE%B0%E6%9C%AC%5C%E9%9D%A2%E8%AF%95%5C%E9%9D%A2%E8%AF%95%5C%E9%9D%A2%E8%AF%95%E5%A4%8D%E7%9B%98.assets%5Cimage-20221103111535343.png" alt="image-20221103111535343"></p>
</li>
<li>
<p>springMVC请求过程</p>
</li>
<li>
<p>spring bean的生命周期</p>
<p>​	<a href="">定义、注册、创建、注入、初始化、销毁</a></p>
</li>
<li>
<p>spring boot和spring的区别</p>
</li>
<li>
<p>spring boot的自动装配原理</p>
</li>
<li>
<p>spring AOP了解过吗</p>
</li>
<li>
<p>JDK和GClib动态代理有什么区别</p>
<p>​	<a href="">两者对比 JDK动态代理是面向接口的</a></p>
<p>​	<a href="">CGLib动态代理是通过字节码底层继承代理类来实现，</a></p>
<p>​	<a href="">如果被代理类被 final 关键字所修饰，则无法被代理。</a></p>
</li>
<li>
<p>MySQL的事务隔离级别</p>
<p>​	<a href="">读未提交、读已提交、可重复读以及可串行化</a></p>
</li>
<li>
<p>InnoDB怎么解决不可脏读和重复读</p>
</li>
<li>
<p>MySQL日志有了解过吗</p>
<blockquote>
<p>1：<strong>重做日志（redo log）</strong></p>
<p>2：<strong>回滚日志（undo log）</strong></p>
<p>3：<strong>二进制日志（binlog）</strong></p>
<p>4：<strong>错误日志（errorlog）</strong></p>
<p>5：<strong>慢查询日志（slow query log）</strong></p>
<p>6：<strong>一般查询日志（general log）</strong></p>
<p>7：<strong>中继日志（relay log）</strong></p>
<p><a href="https://www.cnblogs.com/myseries/p/10728533.html">MySQL中的几种日志了解 - myseries - 博客园 (cnblogs.com)</a></p>
</blockquote>
</li>
<li>
<p>JDK的 /bin 目录下有哪些是查看JVM参数的工具</p>
<p>​	<a href="">jps：查看本机java进程信息</a></p>
<p>​	<a href="">jstack：打印线程的<strong>栈</strong>信息，制作线程dump文件</a></p>
<p>​	<a href="">jmap：打印内存映射，制作<strong>堆</strong>dump文件</a></p>
<p>​	<a href="">jstat：性能监控工具</a></p>
<p>​	<a href="">jhat：内存分析工具</a></p>
<p>​	<a href="">jconsole：简易的可视化控制台</a></p>
<p>​	<a href="">jvisualvm：功能强大的控制台</a></p>
</li>
<li>
<p>讲一下常见的GC算法有哪些</p>
</li>
<li>
<p>常见的垃圾收集器有哪些</p>
</li>
<li>
<p>线上CPU被占满了，怎么排查故障</p>
</li>
<li>
<p>Redis常见的数据类型，项目中用在什么地方</p>
</li>
<li>
<p>接口的幂等性有哪些方法实现</p>
<p>​	<a href="">幂等性的 6种实现方式，包括前端拦截、数据库悲观锁实现、数据唯一索引实现、</a>	<a href="">数据库乐观锁实现、JVM 锁实现，以及分布式锁的实现等方案</a></p>
</li>
</ul>
<hr>
<p>前端：</p>
<ul>
<li>学的是vue2还是vue3</li>
<li>vue3相较于vue2优化在什么地方</li>
<li>说几个微信页面跳转的方式</li>
<li>小程序一个点击方法怎么传值</li>
<li>更新视图改调用哪个方法</li>
<li>怎么绑定点击事件</li>
<li>怎么阻止事件冒泡</li>
</ul>
<hr>
<p>我有什么想问的：</p>
<ul>
<li>做哪种项目</li>
<li>技术栈</li>
<li>待遇</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>面试时间：2022/07/19</p>
<p>面试时长：21分钟 <code>没通过</code></p>
</blockquote>
<h2 id="第三家广州">第三家：广州</h2>
<h3 id="一面">一面</h3>
<ul>
<li>
<p>省略一点闲聊的问题。。。</p>
</li>
<li>
<p>有考虑到广州这边发展吗</p>
</li>
<li>
<p>目前求职进度如何</p>
</li>
<li>
<p>介绍一下自己Java的一个学习路线</p>
</li>
<li>
<p>一般通过什么平台学习</p>
</li>
<li>
<p>给我介绍一下集合</p>
</li>
<li>
<p>ioc中bean的对象有哪一些</p>
</li>
<li>
<p>mybatis的缓存有了解吗</p>
</li>
<li>
<p>spring boot常见的注解</p>
</li>
<li>
<p>讲一下自己做的项目</p>
</li>
<li>
<p>这个项目开发周期有多久</p>
</li>
<li>
<p>整体是多少人</p>
</li>
<li>
<p>怎么分工</p>
</li>
<li>
<p>开发的过程怎么规划自己的时间</p>
</li>
<li>
<p>有没有自己熬夜加过班</p>
</li>
<li>
<p>把遇到的bug分类你会分为哪几类</p>
</li>
<li>
<p>印象非常深刻的bug</p>
</li>
<li>
<p>为什么会想参加这个项目</p>
</li>
<li>
<p>觉得自己在这个组织里面自己有意义吗</p>
</li>
<li>
<p>与自己单独开发有什么优势</p>
</li>
<li>
<p>当面临冲突的时候怎么解决（与同事的想法不一样时怎么解决）</p>
</li>
<li>
<p>目前找实习会主要关注哪三个因素</p>
</li>
<li>
<p>薪资个人期望</p>
</li>
</ul>
<hr>
<p>我有什么想法问的：</p>
<ul>
<li>
<p>公司主要开发的方向</p>
<p>基本上都是政务，公安局警务、社保医保、市场监管三个行业系统为主</p>
</li>
<li>
<p>技术栈</p>
</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>线上测评：2022/07/26</p>
<p>一面时间：2022/08/09</p>
<p>面试时长：25分钟 <code>一面通过</code> 过程相较前两次面试还是很融洽的，问的技术有关的问题不多，估计二面会是一块硬骨头，可能一面就是想看看我简历里面的项目是不是作假，二面才是八股文的真正考验了</p>
</blockquote>
<h3 id="二面废废了">二面（废废了）</h3>
<ul>
<li>
<p>Java是自学的吗</p>
</li>
<li>
<p>自学是通过什么方法学的</p>
</li>
<li>
<p>项目从需求到落地过程是怎么样的</p>
<p><code>首先是需求，然后对需求进行分析，之后绘制流程图，然后研发，研发完成之后就是测试，测试之后到产品的验收</code></p>
</li>
<li>
<p>你觉得你做的大部分是不是都是CRUD</p>
</li>
<li>
<p>mybatis有两个缓存，讲一下二级缓存</p>
</li>
<li>
<p>什么情况下会清除缓存，怎么操作</p>
<p><code>在mapper配置文件中，给select加上flushCache=&quot;true&quot;，这样会清空缓存第二次会再去数据库查询．</code></p>
</li>
<li>
<p>Spring的IoC实例化Bean，有几种作用域</p>
</li>
<li>
<p>HashMap和HashTable的区别</p>
</li>
<li>
<p>一个类的私有静态方法能被子类重写吗</p>
</li>
<li>
<p>不可以重写的话，原因是什么</p>
</li>
<li>
<p>String、StringBuilder、StringBuffere的区别</p>
</li>
<li>
<p>被final修饰会怎么样</p>
<ul>
<li>final类不能被继承，没有子类，final类中的方法默认是final的。</li>
<li>final方法不能被子类的方法覆盖，但可以被继承。</li>
<li>final成员变量表示常量，只能被赋值一次，赋值后值不再改变。</li>
<li>final不能用于修饰构造方法。</li>
</ul>
</li>
<li>
<p>String是可变的吗</p>
</li>
<li>
<p>序列化有什么作用</p>
<p><code>序列化简单来说就保存对象在内存中的状态也可以说是实例化变量。这是Java提供的用来保存 Object state，一种保存对象状态的机制。只有实现了serializable接口的类的对象才能被实例化。</code></p>
</li>
<li>
<p>线程有几种状态</p>
</li>
<li>
<p>我现在有一个类，对它的静态方法加了一个同步关键字，对普通方法也嫁了一个同步关键字，然后我启了一个多线程，分别去调用这两个方法，会阻塞吗</p>
</li>
<li>
<p>事务的传播特性</p>
</li>
<li>
<p>数据库创建索引的时候，要注意什么</p>
</li>
<li>
<p>比如说有个表A，怎么考虑怎么加索引</p>
</li>
<li>
<p>讲Ajax变成同步请求怎么发</p>
</li>
<li>
<p>可以实习多长时间</p>
</li>
<li>
<p>有转正的想法吗</p>
</li>
<li>
<p>什么时候可以到岗</p>
</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>一面时间：2022/08/15</p>
<p>面试时长：21分钟 <code>未通过</code>别说面试官了，我听都回放都麻了，好久没有学习，回答问题无论对不对都是断断续续的</p>
</blockquote>
<h2 id="第四家广州">第四家：广州</h2>
<ul>
<li>
<p>JDK和JRE的区别（答得不太好）</p>
<p><a href="">JDK包含JRE。JRE顾名思义是java运行时环境，包含了java虚拟机，java基础类库。是使用java语言编写的程序运行所需要的软件环境，是提供给想运行java程序的用户使用的。</a></p>
</li>
<li>
<p>String是基础数据类型吗</p>
</li>
<li>
<p>String是什么数据类型</p>
</li>
<li>
<p>String常见的方法</p>
</li>
<li>
<p>介绍一下它的深拷贝（不知道）</p>
<p><a href="">当我们需要拷贝一个对象时，有两种类型的拷贝：浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址，所以源对象的值发生变化时，拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值，所以即使源对象的值发生变化时，拷贝对象的值也不会改变。</a></p>
</li>
<li>
<p>Java的常见异常有哪些</p>
</li>
<li>
<p>异常如何处理</p>
</li>
<li>
<p>有了解过HashMap吗</p>
</li>
<li>
<p>重载和重写的区别</p>
<p><a href="">重载必须改变参数列表，可以修改返回值类型，可以修改访问修饰符，被重载的方法可以声明新的或更广的检查异常，方法能够在同一个类或这子类种被重载</a></p>
<p><a href="">重写的参数列表，返回值类型必须相同，访问级别的限制不能比被重写方法的限制性强，重写方法一定不能抛出新的异常或者比被重写的方法检查异常更广泛的检查异常，不能重写被标示为final的方法，如果不能继承这个方法，则布恩那个重写这个方法</a></p>
</li>
<li>
<p>反射的应用场景</p>
<p><a href="">在我们平时的项目开发过程中，基本上很少会直接使用到反射机制，但是实际上有很多设计、开发都与反射机制有关，例如模块化的开发，通过反射去调用对应的字节码；动态代理设计模式也采用了反射机制，还有我们日常使用的 Spring等框架也大量使用到了反射机制。</a></p>
</li>
<li>
<p>IoC容器的原理</p>
</li>
<li>
<p>项目中的负责内容</p>
</li>
<li>
<p>如何实现接口防刷和防篡改</p>
</li>
<li>
<p>了解Spring Cloud吗</p>
</li>
<li>
<p>介绍一下Spring Could Alibaba的核心组件（巴拉巴拉讲了一大堆）</p>
</li>
<li>
<p>sentinel的热点规则（没讲出来，不过把面试官往流控规则引，因为我记得这个）</p>
</li>
<li>
<p>那讲一下流控规则</p>
</li>
<li>
<p>省略一些闲聊</p>
</li>
<li>
<p>数据库用的是什么</p>
</li>
<li>
<p>常见的索引失效</p>
</li>
<li>
<p>你对我们公司有什么想要了解的</p>
</li>
</ul>
<hr>
<p>有什么想要了解的：</p>
<ul>
<li>
<p>可以实习吗</p>
<p>可以实习，也可以签三方</p>
<p>学校是在沈阳是吗？</p>
<p>对</p>
<p>你现在是大四，还有课吗？</p>
<p>没有课了，如果可以通过面试我都想直接去实习了</p>
</li>
<li>
<p>有住宿</p>
<p>有宿舍</p>
</li>
<li>
<p>刚才您问我一个热点规则，我不太了解，您可以给我解答一下吗</p>
<p>巴拉巴拉</p>
</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>面试时间：2022/10/18</p>
<p>笔试&amp;测评时间：2022/10/21</p>
<p>面试时长：28分钟 <code>通过</code> 问的问题不算太难，JDK和JRE答得不太好，深拷贝看书刚好没看到这里！！！sentinel的热点规则是在不记得了，只记得流控规则就直接了当跟面试官说不记得了，然后说记得流控规则，然后他就让我讲讲流控规则。整套流程下来还好，不是特别难，就是有点奇怪居然是面试通过了才做笔试</p>
</blockquote>
<h2 id="第五家广州">第五家：广州</h2>
<ul>
<li>
<p>操作系统的内存管理</p>
<p>内存管理功能</p>
<ul>
<li>内存的分配与回收：当作业或进程创建后系统会为他们分配内存空间，当结束后内存空间也会被回收。</li>
<li>地址转换：将程序中的逻辑地址转换成内存中的物理地址</li>
<li>内存空间的扩充：利用虚拟存储技术或自动覆盖技术，从逻辑上扩充内存</li>
<li>存储保护：保证个个作业在自己的内存空间内运行，互不干扰</li>
</ul>
</li>
<li>
<p>TCP的三次握手，以及每一次客户端的状态</p>
<p>之所以要三次握手和四次挥手主要有两个原因，一个是安全，也就是可靠性或者叫做面向连接的，第二个就是双工，就是双向传输，双向传输的意思就是既可以从客户端给服务端发送消息，反过来也可以从服务器端给客户端发送数据。</p>
<p>首先第一个是它的可靠性，也就是安全性，这点就要求TCP需要握手和挥手，如果像UDP那样不需要保证可靠性，掉了包也无所谓，那根本不需要握手和挥手直接发就可以了。</p>
<p>如果是单向传输很显然就只需要两次握手，也就是发起方发数据之前要先发一个请求，也就是SYN，而且必须等到接收方ack之后再发数据，否则就没办法知道对方有没有准备好，而且不只是握手需要ack，实际上每次传输都要ack，这样才能保证掉的包可以重传以及滑动窗口。</p>
<p>如果是双向的需要三次握手，因为服务器也要向客户端发请求，发送syn，并且得到ack，只需要三次是因为服务器端的确认和服务器向客户端的请求被合并成了一次</p>
</li>
<li>
<p>线程池的参数</p>
</li>
<li>
<p>进程和线程的区别</p>
<p><a href="">地址空间来说的话：线程共享本进程的地址空间，而进程之间是独立的地址空间</a></p>
<p><a href="">资源上来说的话：线程共享本进程的资源如内存、I/O、cpu等，不利于资源的管理和保护，而进程之间的资源是独立的，能很好的进行资源管理和保护。</a></p>
<p><a href="">线程是处理器调度的基本单位，但是进程不是</a></p>
<blockquote>
<p>进程：是并发执行的程序在执行过程中分配和管理资源的基本单位，是一个动态概念，竞争计算机系统资源的基本单位。</p>
<p>线程：是进程的一个执行单元，是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。</p>
</blockquote>
</li>
<li>
<p>为什么要创建线程（有了进程为什么还要创建线程）</p>
<p><a href="">每个进程都有自己的地址空间，也就是进程空间，在网络或多用户换机的情况下，一个服务器通常需要接收大量不确定数量用户的并发请求，为每一个请求都创建一个进程显然是行不通的（系统开销越大响应用户请求效率越低），所以就需要引入线程这个概念。</a></p>
</li>
<li>
<p>HashMap是如何实现的</p>
</li>
<li>
<p>HashMapJDK1.8的优化为了什么</p>
</li>
<li>
<p>HashMap的get和put</p>
</li>
<li>
<p>链地址法是插入链表的头部还是尾部</p>
</li>
<li>
<p>HashMap是线程安全的吗</p>
</li>
<li>
<p>synchronized锁升级</p>
</li>
<li>
<p>MySQL、Redis、MongoDB、ES的使用场景</p>
</li>
<li>
<p>MySQL的事务隔离级别</p>
</li>
<li>
<p>这四种隔离级别会对应有哪些问题</p>
</li>
<li>
<p>脏读、幻读、不可重复读是什么意思</p>
</li>
<li>
<p>共享屏幕写算法——有一个链表，去除链表中重复的数据(1-3-2-1，返回1-3-2)</p>
<p>当时写的👇</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">package</span> com.yupi.sqlfather<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> org.junit.jupiter.api.Test<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">test</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">ListNode</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">private</span> Integer data<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">private</span> ListNode next<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">public</span> <span style="color:#a6e22e">ListNode</span><span style="color:#f92672">(</span>Integer data<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">this</span><span style="color:#f92672">.</span><span style="color:#a6e22e">data</span> <span style="color:#f92672">=</span> data<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">remove</span><span style="color:#f92672">(</span>ListNode node<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        ListNode p <span style="color:#f92672">=</span> node<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span> <span style="color:#f92672">(</span>p <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span><span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            ListNode p1 <span style="color:#f92672">=</span> p<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>            ListNode pre <span style="color:#f92672">=</span> p<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span> <span style="color:#f92672">(</span>p <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span><span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> <span style="color:#f92672">(</span>p1<span style="color:#f92672">.</span><span style="color:#a6e22e">data</span><span style="color:#f92672">.</span><span style="color:#a6e22e">equals</span><span style="color:#f92672">(</span>p<span style="color:#f92672">.</span><span style="color:#a6e22e">data</span><span style="color:#f92672">))</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>                    pre<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span> <span style="color:#f92672">=</span> p1<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>                <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>                p1 <span style="color:#f92672">=</span> p1<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>                pre <span style="color:#f92672">=</span> pre<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>            <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>            p <span style="color:#f92672">=</span> p<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@Test</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">test</span><span style="color:#f92672">()</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> arr <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[]{</span>1<span style="color:#f92672">,</span> 2<span style="color:#f92672">,</span> 1<span style="color:#f92672">,</span> 3<span style="color:#f92672">};</span>
</span></span><span style="display:flex;"><span>        ListNode first <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ListNode<span style="color:#f92672">(</span><span style="color:#66d9ef">null</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        ListNode p <span style="color:#f92672">=</span> first<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> <span style="color:#f92672">(</span><span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0<span style="color:#f92672">;</span> i <span style="color:#f92672">&lt;</span> arr<span style="color:#f92672">.</span><span style="color:#a6e22e">length</span><span style="color:#f92672">;</span> i<span style="color:#f92672">++)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            p<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ListNode<span style="color:#f92672">(</span>arr<span style="color:#f92672">[</span>i<span style="color:#f92672">]);</span>
</span></span><span style="display:flex;"><span>            p <span style="color:#f92672">=</span> p<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>        remove<span style="color:#f92672">(</span>first<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        ListNode p1 <span style="color:#f92672">=</span> first<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span><span style="color:#f92672">(</span>p<span style="color:#f92672">!=</span><span style="color:#66d9ef">null</span><span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span>p1<span style="color:#f92672">.</span><span style="color:#a6e22e">data</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            p1<span style="color:#f92672">=</span>p1<span style="color:#f92672">.</span><span style="color:#a6e22e">next</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div></li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>面试时间：2022/11/03</p>
<p>面试时长：33分钟 <code>未通过</code> ，前面几道操作系统的题基本上完全没答上来，Java方面的出来锁优化都答上来了，但是说话结巴太严重了，算法题也不会写</p>
</blockquote>
<h2 id="第六家杭州">第六家：杭州</h2>
<ul>
<li>
<p>==和equals的区别</p>
</li>
<li>
<p>ArrayList和LinkedList的区别</p>
</li>
<li>
<p>HashMap和HashTable的区别</p>
</li>
<li>
<p>HashTable和ConcurrentHashMap的区别</p>
</li>
<li>
<p>newFixExcuPool线程池是用来做什么的</p>
</li>
<li>
<p>值传递和引用传递</p>
</li>
<li>
<p>MySQL的左连接、右连接、内连接、全连接的区别</p>
</li>
<li>
<p>having和where的区别</p>
</li>
<li>
<p>in和exist的区别</p>
</li>
<li>
<p>if和switch的区别</p>
</li>
<li>
<p>SpringMVC的执行流程</p>
</li>
<li>
<p>Spring的事务传播特性</p>
</li>
<li>
<p>Spring事务的隔离级别</p>
</li>
<li>
<p>讲一下什么是读未提交</p>
</li>
<li>
<p>单例的两个模式和代码是如何实现的</p>
</li>
<li>
<p>工厂模式有了解过吗</p>
</li>
<li>
<p>Redis的常用数据类型</p>
</li>
<li>
<p>这些数据类型的使用场景</p>
</li>
<li>
<p>Redis的淘汰机制了解过吗</p>
</li>
<li>
<p>Java的原子引用问题</p>
</li>
<li>
<p>Zookeeper用来做什么</p>
</li>
<li>
<p>为什么要使用RocketMQ</p>
</li>
<li>
<p>Linux怎么查找一个文件比如aa的文件</p>
</li>
<li>
<p>令牌登录怎么实现</p>
</li>
<li>
<p>讲一下Elasesearch</p>
</li>
<li>
<p>讲一讲你的优势优点</p>
</li>
</ul>
<hr>
<p>我有啥想问的：</p>
<ul>
<li>
<p>毕业之后可以转正吗</p>
<p>可以</p>
</li>
<li>
<p>技术栈</p>
<p>SpringBoot、Spring Cloud</p>
</li>
<li>
<p>有住宿吗</p>
<p>没有</p>
</li>
<li>
<p>薪资</p>
<p>这个得跟人事谈</p>
</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>面试时间：2022/11/10</p>
<p>面试时长：30分钟 <code>通过</code> ，面试官的态度挺不错，照着简历问的问题基本上都答上来了，就是有一些答得不太完整和有一些磕磕绊绊，总体好还可以</p>
</blockquote>
<h2 id="第七家杭州">第七家：杭州</h2>
<h3 id="一面-1">一面</h3>
<ul>
<li>
<p>面向对象的三大特性</p>
</li>
<li>
<p>分别讲一下什么是封装、继承、多态</p>
</li>
<li>
<p>Java的基本数据类型</p>
<p>~答：byte、short、int、long、float、double、char、boolean~</p>
<p>~面试官：还有吗？~</p>
<p>~答：（心理活动：？？？还有吗？？？）额，额，没有了吧，String不是基本数据类型，是引用数据类型~</p>
</li>
<li>
<p>==和equals的区别</p>
<p><a href="">== 的作用：</a>
　　<a href="">基本类型：比较值是否相等</a>
　　<a href="">引用类型：比较内存地址值是否相等</a></p>
<p><a href="">equals 的作用:</a>
　　<a href="">引用类型：默认情况下，比较内存地址值是否相等。可以按照需求逻辑，重</a><a href="">写对象的equals方法</a></p>
</li>
<li>
<p>接口和抽象类的区别</p>
</li>
<li>
<p>你使用的Java容器有哪些</p>
</li>
<li>
<p>讲一下你常用的集合容器（好）</p>
</li>
<li>
<p>Lock 和 Synchronized的区别</p>
</li>
<li>
<p>了解的垃圾收集器</p>
</li>
<li>
<p>讲一下了解的垃圾收集算法</p>
</li>
<li>
<p>复制算法往一段游走代码怎么实现</p>
</li>
<li>
<p>servlet的生命周期</p>
<p><a href="">Servlet 初始化后调用 <strong>init ()</strong> 方法</a></p>
<p><a href="">Servlet 调用 <strong>service()</strong> 方法来处理客户端的请求</a>,重写doGet/doPost</p>
<p><a href="">Servlet 销毁前调用 <strong>destroy()</strong> 方法</a></p>
<p><a href="">最后，Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。</a></p>
</li>
<li>
<p>项目里面怎么SQL调优</p>
</li>
<li>
<p>怎么优化SQL（好）</p>
</li>
<li>
<p>Redis如何实现接口防刷（好）</p>
</li>
<li>
<p>Redis常见数据类型</p>
</li>
</ul>
<hr>
<p>我有啥想问的：</p>
<ul>
<li>
<p>有住宿嘛</p>
<p>应该是没有</p>
</li>
<li>
<p>技术栈</p>
<p>Spring全家桶</p>
</li>
</ul>
<blockquote>
<p>==<strong>总结一下：</strong>==</p>
<p>面试时间：2022/11/23</p>
<p>面试时长：40分钟 <code>通过</code> ，前面面向对象讲的不好，实在没想到一上来就问面向对象呀，面向特性三大特性我知道，但是要具体讲一下真的讲不好，还好后面的问题答得面试官挺满意，早上十点面的，中午就联系二面了</p>
</blockquote>
<h3 id="二面">二面</h3>
<ul>
<li>讲一下你做的项目</li>
<li>模块都是你自己实现的吗</li>
<li>讲一下令牌登录怎么实现的</li>
<li>用户密码是明文的吗</li>
<li>加密的盐值是怎么取的</li>
<li>你在项目中你学习到最深的东西是什么</li>
<li>讲一下接口防刷怎么实现</li>
<li>幂等怎么实现</li>
<li>对中间件有深入的了解吗</li>
<li>能讲一下一个中间件的原理</li>
<li>比如说Redis的持久化怎么的</li>
<li>讲一下AOF和RDB</li>
<li>Java的源码有了解过吗</li>
<li>讲一下StringBuffer的源码</li>
<li>HashMap的源码</li>
<li>数据库的索引有了解过吗</li>
<li>索引实现的原理有了解吗</li>
<li>B+树的模型有了解过吗</li>
</ul>
<hr>
<p>我这边有什么问题吗：</p>
<ul>
<li>
<p>面试一共有几轮</p>
<p>三轮，两轮技术面，一轮HR面</p>
</li>
<li>
<p>主要是做什么业务</p>
<p>主要是采购供应链的业务，主要是给大企业做采购系统，采购和销售的网站</p>
</li>
</ul>
<blockquote>
<p><code>**总结一下：**</code></p>
<p>面试时间：2022/11/24</p>
<p>面试时长：22分钟 <code>通过</code> ，22分钟那么快就结束了，我还以为是我没有通过，除了最后一题B+树忘记了，其他的基本上都答上来了，早上十点面试，十一点多就约我三面，这速度属实有点离谱了，还是第一次碰到那么快的</p>
</blockquote>
<h3 id="三面">三面</h3>
<ul>
<li>对我们前两轮的面试官还有印象吗</li>
<li>他们给你一个什么样的印象</li>
<li>你觉得你前两轮发挥的怎么样</li>
<li>你现在在学校还是在家</li>
<li>你自己的发展规划是什么样子的</li>
<li>短期的规划是怎么样的</li>
<li>毕业想去哪里工作</li>
<li>你个人的发展方面有没有想过自己想去一个什么样的企业和岗位</li>
<li>在选择公司的时候你是怎么选择的，有你自己考虑维度吗</li>
<li>你怎么知道这家公司就适合你</li>
<li>你有收到offer吗</li>
<li>收到什么样的offer</li>
<li>到时候你会怎么选（直接死在这里）</li>
<li>你签的那家公司是什么样的公司</li>
<li>这家公司薪资福利待遇大概是什么样子</li>
<li>为什么签了那家公司之后还要找实习岗，你是有自己的考虑吗</li>
<li>毕业之后你自己对薪资的期望怎么样</li>
</ul>
<hr>
<p>我有什么想问的：</p>
<ul>
<li>实习的待遇是怎么样</li>
<li>岗位职责</li>
</ul>
<blockquote>
<p>==<strong>总结一下：</strong>==</p>
<p>面试时间：2022/11/25</p>
<p>面试时长：13分钟 <code>未通过</code> ，就离谱，脑抽了跟她说我已经签三方了，直接没了，不然可能还能通过，不过HR面雀食不太擅长，说话有点断断续续的</p>
</blockquote>

    <h4><a href="https://czh-dev.gitee.io/czh-blog.gitee.io/">Back to Home</a></h4>
  </div>

  <div class="span3 bs-docs-sidebar" style="position:fixed;right: 40px;top: 50px;">
    <h1>catalogue</h1>
    <ul class="nav nav-list bs-docs-sidenav">
      <div class="toc-div">
        <nav id="TableOfContents">
  <ul>
    <li><a href="#第一家苏州">第一家：苏州</a></li>
    <li><a href="#第二家上海">第二家：上海</a></li>
    <li><a href="#第三家广州">第三家：广州</a>
      <ul>
        <li><a href="#一面">一面</a></li>
        <li><a href="#二面废废了">二面（废废了）</a></li>
      </ul>
    </li>
    <li><a href="#第四家广州">第四家：广州</a></li>
    <li><a href="#第五家广州">第五家：广州</a></li>
    <li><a href="#第六家杭州">第六家：杭州</a></li>
    <li><a href="#第七家杭州">第七家：杭州</a>
      <ul>
        <li><a href="#一面-1">一面</a></li>
        <li><a href="#二面">二面</a></li>
        <li><a href="#三面">三面</a></li>
      </ul>
    </li>
  </ul>
</nav>
      </div>
    </ul>
  </div>

</div>
<script src="https://cdn.jsdelivr.net/npm/gumshoejs@5.1.2/dist/gumshoe.min.js"></script>
<script>
  var spy = new Gumshoe('#TableOfContents a', {
    nested: true,
    nestedClass: 'active'
  });
</script>
<style>
   
  #TableOfContents li,
  #TableOfContents ul {
    list-style-type: none;
  }

  #TableOfContents ul {
    padding-left: 0px;
  }

  #TableOfContents li>a {
    display: block;
    padding: 4px 20px;
    font-size: 95%;
    color: #000000;
  }

  #TableOfContents li>a:hover,
  #TableOfContents li>a:focus {
    padding-left: 19px;
    color: #3A6bA5;
    text-decoration: none;
    background-color: transparent;
    border-left: 1px solid #3A6bA5;
  }

  #TableOfContents li.active>a,
  #TableOfContents li.active>a:hover,
  #TableOfContents li.active>a:focus {
    padding-left: 18px;
    font-weight: bold;
    color: #3A6bA5;
    background-color: transparent;
    border-left: 2px solid #3A6bA5;
  }

   
  #TableOfContents li>ul {
    padding-bottom: 10px;
  }

  #TableOfContents li li>a {
    padding-top: 1px;
    padding-bottom: 1px;
    padding-left: 30px;
    font-size: 14px;
    font-weight: normal;
  }

  #TableOfContents li li>a:hover,
  #TableOfContents li li>a:focus {
    padding-left: 29px;
  }

  #TableOfContents li li.active>a,
  #TableOfContents li li.active>a:hover,
  #TableOfContents li li.active>a:focus {
    padding-left: 28px;
    font-weight: 500;
  }

  #TableOfContents .nav-link.active+ul {
    display: block;
  }

  #TableOfContents li>ul {
    display: none;
  }

  #TableOfContents li.active>ul {
    display: inherit;
  }

  .toc-div {
    position: -webkit-sticky;
     
    position: sticky;
     
    top: 20px;
  }
</style>


        </div><footer class="container">
    <hr class="soften">
    <p>
    <a href="https://space.bilibili.com/1799809923">Love eating fried pork ribs</a> | 

&copy; 
<a href="http://jmf-portfolio.netlify.com" target="_blank">
    JM Fergeau
</a>
<span id="thisyear">2023</span>

    | My site


        | Built on <a href="//gohugo.io" target="_blank">Hugo</a>

</p>
    <p class="text-center">
        <a href="https://facebook.com">Facebook</a> 
        <a href="https://twitter.com">Twitter</a> 
        <a href="https://linkedin.com">Linkedin</a> 
        <a href="https://github.com">GitHub</a> 
        <a href="https://gitlab.com">GitLab</a>
    </p>
</footer>

</body><link rel="stylesheet" href="/czh-blog.gitee.io/css/bootstrap.css">
<link rel="stylesheet" href="/czh-blog.gitee.io/css/bootstrap-responsive.css">
<link rel="stylesheet" href="/czh-blog.gitee.io/css/style.css">

<script src="/czh-blog.gitee.io/js/jquery.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-386.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-transition.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-alert.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-modal.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-dropdown.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-scrollspy.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-tab.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-tooltip.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-popover.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-button.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-collapse.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-carousel.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-typeahead.js"></script>
<script src="/czh-blog.gitee.io/js/bootstrap-affix.js"></script>
<script>
    _386 = { 
        fastLoad: false ,
        onePass: false , 
        speedFactor: 1 
    };

    
    function ThisYear() {
        document.getElementById('thisyear').innerHTML = new Date().getFullYear();
    };
</script>
</html>
